#pragma once

#include <QtCore/QString>

#include "EffectVariableGuiControl.h"

struct EffectVariableType
{
	enum Enum
	{
		Float = 0,
		Int,
		Bool,
	};
};

struct EffectVariableValue
{
	EffectVariableType::Enum type;

	union {
		float floatValue;
		int intValue;
		bool boolValue;
	};
};

struct StandardValue
{
	enum Enum
	{
		DeltaTime = 0,
		ElapsedTime,
		Invalid,
	};
};

struct EffectVariable
{
	bool shouldUpdateEveryFrame;

	bool hasGuiControl;
	EffectVariableGuiControl guiControl;

	bool isStandardValue;
	StandardValue::Enum standardValue;

	QString name;
	EffectVariableValue value;
};